ON DELETE CASCADE
表示如果父表中记录删除,则子表中引用了父表记录的行都会被删除。
# 新建表
CREATE TABLE a (
id int not null,
name varchar(20),
primary key(id)
);
CREATE TABLE b (
id int not null,
a_id int not null,
CONSTRAINT `fk_a__id` FOREIGN KEY (`a_id`) REFERENCES `a` (`id`) ON DELETE CASCADE
);
当设置SET GLOBAL FOREIGN_KEY_CHECKS=0;(下次登录生效)
时,级联删除并不会生效。 当我们使用语句delete from a
时,mysql会将b表中的数据也会删除,那删除b表中的数据这一操作会不会记在binlog中呢?? 经过验证不管设置何种binlog_format
b表中的数据变化并不会记录在日志文件中。级联操作是根据存储引擎通过外键关系来进行操作的,并不会体现在日志文件中。mysql文档中有详细的解释